<?php

namespace app\admin\controller;

use app\common\model\Admin;
use app\common\model\Adminlog;
use think\Controller;
use think\Request;

class Login extends Controller
{
    /**
     * 登录操作
     * @return array|mixed
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function login(){
//        加载页面
        if (\request()->isGet()){
            return $this->fetch();
        }
//        判断登录操作信息
        if (\request()->isAjax()){
//            获取登录信息
            $post = input('post.');
//            判断有没有填写账号
            if (empty($post['username'])){
                return ['state'=>0,'message'=>'请填写账号'];
            }
//            判断有没有填写密码
            if (empty($post['password'])){
                return ['state'=>0,'message'=>'密码不能为空'];
            }
//            判断验证码是否正确
            if (!captcha_check($post['captcha'])){
                return ['state'=>0,'message'=>'验证码错误'];
            }
//            查找管理员信息
            $AdminModel = new Admin();
            $adminData = $AdminModel->where('username',$post['username'])->find();
//            如果管理员信息为空表示账号不存在
            if ($adminData==null){
                return ['state'=>0,'message'=>'账号不存在'];
            }
//            查看是否禁止登陆
            if ($adminData['status']==0){
                return ['state'=>0,'message'=>'账号被停用，请联系管理员'];
            }
//            加密提交的密码
            $password = get_md5_str($post['password']);
//            比对密码信息
            if ($password!=$adminData['password']){
                return ['state'=>0,'message'=>'密码错误'];
            }
            unset($adminData['password']);
//            存入session，提示登录成功跳转页面
            session('admin',$adminData);
            $res = $this->loginLog();
            if ($res){
                return ['state'=>1,'message'=>'登录成功','url'=>url('index/index')];
            }else{
                return ['state'=>0,'message'=>'登录失败'];
            }

        }

    }

    /**
     * 退出登录
     */
    public function logout(){
        session('admin',null);
        cache('menuData',null);
        return $this->success('退出成功');
    }


    private function loginLog(){
        $data = [
            'admin_id'=>session('admin.admin_id'),
            'log_time'=>time(),
            'log_ip'=>$_SERVER['REMOTE_ADDR'],
        ];
        $AdminlogModel = new Adminlog();
        $res = $AdminlogModel->save($data);
        return $res;
    }
}
